Directional geo-fencing based on environmental monitoring

ABSTRACT

As disclosed herein a dynamic geo-fencing method includes receiving a plurality of geo-fence extent factors, a plurality of extents, and a plurality of violation responses for a geo-fence, determining a first geo-fence extent factor of the plurality of geo-fence extent factors, selecting a first extent for the geo-fence corresponding to the first geo-fence extent factor, determining that the geo-fence is violated, and responsive to determining that the geo-fence is violated, performing a violation response, of the plurality of violation responses, corresponding to the first geo-fence extent factor. A corresponding system and computer program product are also disclosed herein.

BACKGROUND OF THE INVENTION

The present invention relates generally to the field of data processingand more particularly to geo-fencing.

A geo-fence is a virtual perimeter for a real-world geographic area. Thegeographical boundary of a geo-fence may be defined using a globalpositioning system or radio frequency identification. One example ofusage involves determining when a user of a trackable device is enteringor exiting a geo-fence. Such an event could trigger an alert to thedevice user or a message to the geo-fence operator. Informationregarding the location of the trackable device may be sent to acomputing device.

SUMMARY

One embodiment of the present invention includes receiving a pluralityof geo-fence extent factors, a plurality of extents, and a plurality ofviolation responses associated with a geo-fence, determining a firstgeo-fence extent factor of the plurality of geo-fence extent factors,selecting a first extent for the geo-fence corresponding to the firstgeo-fence extent factor, determining that the geo-fence is violated, andresponsive to determining that the geo-fence is violated, performing aviolation response, of the plurality of violation responses,corresponding to the first geo-fence extent factor.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a plan view illustration depicting one example of ageo-fencing environment in accordance with one or more embodimentsdisclosed herein;

FIG. 1B is a block diagram depicting one example of a distributed dataprocessing environment in accordance with one or more embodimentsdisclosed herein;

FIG. 2 is a flowchart depicting one example of a dynamic geo-fencingmethod in accordance with one or more embodiments disclosed herein;

FIGS. 3A and 3B are plan view illustrations depicting examples ofdynamic geo-fencing scenarios in accordance with one or more embodimentsdisclosed herein; and

FIG. 4 is a block diagram depicting one example of a computing systemsuitable for executing the method of FIG. 2.

DETAILED DESCRIPTION

Embodiments of the invention disclosed herein recognize that currentgeo-fence technology is limited in an ability to dynamically modifygeo-fence boundaries. Embodiments of the invention disclosed hereinprovide a rule-based technique for configuring a geo-fence boundary inreal-time based upon various factors.

The present invention will be described in detail with reference to theFigures. The descriptions of various instances, scenarios, and examplesrelated to the present invention are presented for purposes ofillustration and are not intended to be exhaustive or limited to theembodiments disclosed.

FIG. 1A is a plan view illustration depicting one example of geo-fencingenvironment 100, in accordance with one or more embodiments disclosedherein. FIG. 1A provides only an illustration of one implementation anddoes not imply any limitations with regard to the environments in whichdifferent embodiments may be implemented. Some modifications to thedepicted environment may be made by those skilled in the art withoutdeparting from the scope of the invention as recited by the claims.

As depicted, geo-fencing environment 100 includes resource 110,geo-fence 112, resource 120, geo-fence 122, activation area 130, anduser 140. Geo-fencing environment 100 illustrates the need for dynamicgeo-fence configuration.

In some embodiments, a resource (e.g., resource 110) may be any resourceassociated with geo-fence environment 100 with which an action (e.g., aviolation response) can be taken in response to a violation of acorresponding geo-fence. Resource 110 may be, for example, manufacturingmachinery, construction equipment, stored inventory, or the like. Insome embodiments, resource 120 is substantially similar to resource 110.

In some embodiments, a geo-fence (e.g., geo-fence 112) is a virtualboundary that triggers a violation response when encroached by a user(e.g., user 140). In some embodiments, to determine whether user 140encroaches geo-fence 112, geo-fence 112 may detect a trackable device(e.g., trackable device 142) worn by user 140. Trackable device 142 maybe, for example, a radio frequency identification (RFID) badge or amobile device worn or carried by a user. Geo-fence 112 may utilize, forexample, a global positioning system (GPS), RFID, location-basedservices, a local positioning system, or an indoor positioning system todetect and track trackable device 142, and thereby determine whetheruser 140 has encroached the geo-fence. For example, the extent (e.g.,geographical boundary) of geo-fence 112 may be determined by locationaware devices that utilize radio frequency (RF), such as Bluetooth lowenergy beacons, magnetic fields, acoustical signals, or optical signals.Such devices may be located at various positions throughout geo-fencingenvironment 100 and interconnected through the Internet of Things (IoT).

Geo-fences, including the one or more extents for the geo-fence, may beinitially defined by a user of geo-fence program 101 and stored in datarepository 104. In some embodiments, geo-fence program 101 dynamicallydetermines an extent for the geo-fence in accordance with method 200, asdescribed in FIG. 2. In some embodiments, geo-fence 122 is substantiallysimilar to geo-fence 112. Geo-fence 122 illustrates that the extent of ageo-fence in geo-fencing environment 100 may be defined, at least inpart, by the extent of an encompassing activation area.

In some embodiments, an activation area (e.g., activation area 130) isan area that monitors for the presence of a user (e.g., user 140) andtracks the position the user. An activation area may encompass one ormore geo-fences. In some embodiments, in response to a user beingdetected in an activation area, any geo-fences within the activationarea are activated to monitor for encroachment by the user. For example,in response to activation area 130 detecting user 140, geo-fence 112 andgeo-fence 122 are activated and monitor whether user 140 encroacheseither geo-fence.

In some embodiments, to determine the position of user 140, activationarea 130 may detect and track a trackable device (e.g., trackable device142) worn by user 140. Activation area 130 may utilize, for example, aGPS, RFID, location-based services, a local positioning system, or anindoor positioning system to detect and track trackable device 142, andthereby determine the location of user 140 within the activation area.For example, the virtual boundary of activation area 130 may bedetermined by devices that utilize RF, such as Bluetooth low energybeacons, magnetic fields, acoustical signals, or optical signals. Suchdevices may be located at various positions throughout geo-fencingenvironment 100 and interconnected through the IoT to detect and track auser. Activation area 130 may be defined by a user of geo-fence program101 and stored in data repository 104.

In some embodiments, the extent of a geo-fence is adjusted according toa geo-fence extent factor, e.g., geo-fence extent factor 144. The extentof a geo-fence, adjusted in response to detecting a user withinactivation area 130, may be determined based on the geo-fence extentfactor(s) associated with the detected user. A geo-fence extent factormay be any factor that causes a geo-fence extent to be adjusted to aparticular size, shape, or other threshold. A geo-fence extent factormay include, for example, a type of clothing (e.g., flame resistantclothing, protective headwear, eye protection, etc.) worn by a user, arole of a user (e.g., manager, having a certification in variousequipment, etc.), a temperature (e.g., atmospheric temperature, bodytemperature of a user, etc.), and a chemical (e.g., amount or proportionof a chemical in atmosphere, etc.). Geo-fence extent factors may bedefined by a user of geo-fence program 101 and stored in data repository104.

FIG. 1B is a block diagram depicting one example of a distributed dataprocessing environment. FIG. 1B includes computing device 102, geo-fenceprogram 101, data repository 104, network 106, and geo-fencingenvironment 100. FIG. 1B provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Somemodifications to the depicted environment may be made by those skilledin the art without departing from the scope of the invention as recitedby the claims.

In some embodiments, computing device 102 and geo-fencing environment100, including the components of geo-fencing environment 100, areinterconnected and communicate through network 106. Network 106 may beany combination of connections and protocols that support communicationsbetween computing device 102 and geo-fencing environment 100. Network106 may be, for example, a local area network (LAN), a wireless localarea network (WLAN), such as an intranet, a wide area network (WAN),such as the Internet, a telecommunications network, or any combinationthereof. Network 106 may include wired, wireless, or fiber opticconnections.

In some embodiments, computing device 102 is any electronic device, orcombination of electronic devices, capable of executing computerreadable program instructions and communicating with any computingdevice in geo-fencing environment 100. For example, computing device 102may be a workstation, personal computer, laptop computer, tablet,personal digital assistant, or mobile phone. In some embodiments,computing device 102 is a computer system utilizing clustered computersand components (e.g., database server computers, application servercomputers) that act as a single pool of seamless resources when accessedby elements of geo-fencing environment 100. For example, computingdevice 102 may be a data center in a cloud computing environment. Insome embodiments, computing device 102 includes components as depictedand described with respect to computing system 400 in FIG. 4.

In some embodiments, geo-fence program 101 is any computer program,application, subprogram of a larger program, such as an OS, or acombination thereof that performs operations of geo-fencing method 200(FIG. 2) including receiving geo-fence extent factor information,determining a current geo-fence extent factor, determining a geo-fencefor monitoring, determining a violation of the geo-fence, and performinga violation response. In some embodiments, geo-fence program 101 storesand analyzes violation information stored in data repository 104. Forexample, geo-fence program 101 may determine a pattern of violationswith respect to a particular geo-fence based on the informationcollected and stored in data repository 104. Such information may becontinuously collected, updated, and analyzed by geo-fence program 101.

As depicted, geo-fence program 101 is located in computing device 102.In other embodiments, geo-fence program 101 may located in any othercomputing device connected to geo-fencing environment 100 throughnetwork 106.

In some embodiments, data repository 104 contains information related togeo-fences of geo-fencing environment 100. Such geo-fence informationmay include geo-fence extent factors, extents of geo-fences,corresponding violation responses, and violation information includingdetermined patterns of violations.

In some embodiments, data repository 104 can be implemented with anynon-volatile storage media known in the art. For example, datarepository 104 may be implemented with a tape library, optical library,one or more independent hard disk drives, or multiple hard disk drivesin a redundant array of independent disks (RAID). In an embodiment, datarepository 104 can be implemented using any suitable storagearchitecture known in the art. For example, data repository 104 may beimplemented with a relational database, an object-oriented database, oran object-relational database.

FIG. 2 is a flowchart depicting one example of dynamic geo-fencingmethod 200, in accordance with one or more embodiments disclosed herein.As depicted, geo-fencing method 200 includes receiving (210) geo-fenceextent factor information, determining (220) a current geo-fence extentfactor, determining (230) a geo-fence for monitoring, determining (240)a violation of the geo-fence, and performing (250) a violation response.In some embodiments, method 200 is performed by geo-fence program 101.Method 200 may also be performed by any other computer program whileworking with geo-fence program 101.

Method 200 may be described with reference to FIGS. 3A and 3B. FIGS. 3Aand 3B are plan view illustrations depicting examples of dynamicgeo-fencing scenarios. FIG. 3A and FIG. 3B each depict a differentexample of a modification to a geo-fence. FIG. 3A includes activationarea 302, user 304, user 306, resource 310, geo-fence extent 314,geo-fence extent 316, and geo-fence 320. Geo-fence extents 314, 316, and320 represent geo-fence extents for a geo-fence that corresponds toresource 310. FIG. 3B includes resource 330, geo-fence extent 332, andgeo-fence extent 334. Geo-fence extents 332 and 334 are geo-fenceextents for a geo-fence that corresponds to resource 330.

Receiving (210) geo-fence information may include receiving a geo-fence,one or more geo-fence extent factors, a resource, and an activationarea. Receiving a geo-fence may include receiving one or more extents,or boundaries, of the geo-fence. A geo-fence extent may be defined interms of, for example, geographical position (e.g., coordinates), size(e.g., area, radius, volume, etc.), or shape (e.g., pie-shaped,circular, spherical, etc.).

The extent at which a geo-fence is activated may depend on the extentfactor(s) associated with the user(s) detected in the activation area.For example, in FIG. 3A, geo-fence extent 314 may correspond to theextent factor of a user being a manufacturing intern, and geo-fenceextent 316 may correspond to the extent factor of a user being amanufacturing manager. In some embodiments, geo-fence information may bereceived by a user of geo-fence program 101 and stored in datarepository 104.

Receiving geo-fence information may include receiving one or moregeo-fence extent factors. A user may be associated with one or moregeo-fence extent factors, and each geo-fence extent factor correspondsto a particular extent of a geo-fence. For example, in FIG. 3A, it maybe determined that user 304 is a manufacturing intern associated withthe extent factor of being a manufacturing intern by, for example,analyzing a stored employee profile. It may be similarly determined thatuser 306 is associated with the extent factor of being a manufacturingmanager.

Receiving geo-fence information may include receiving a resource foreach geo-fence and a violation response for each resource. The violationresponse for a corresponding resource may be performed in response tothe geo-fence being violated, that is, for example, determining that auser has encroached the geo-fence. A resource may be any deviceconnected to geo-fence program 101 with which an action (e.g., aviolation response) can be taken. Resources may include, for example,manufacturing machinery or construction equipment.

Receiving geo-fence information may include receiving an activationarea. The boundary of the activation area may encompass one or more ofthe geo-fences. Extents of geo-fences and activation areas may bedetermined using a GPS, an indoor positioning system, or RFID. Devicesutilizing, for example, RF (e.g., Bluetooth low energy devices orbeacons), magnetic fields, acoustical signals, or optical signals mayidentify the geographic positions of a user (e.g., a tracking device ofthe user) within an activation area or determine that a geo-fence extentis violated.

Determining (220) a current geo-fence extent factor may includedetecting a user within an activation area and determining the extentfactors associated with the user. In some embodiments, determining acurrent geo-fence extent factor includes monitoring the activation areafor a geo-fence extent factor in response to receiving the geo-fenceextent factor, and the geo-fence extent factor is determined to be acurrent geo-fence extent factor responsive to detecting the geo-fenceextent factor within the activation area.

As an example, an activation area may encompass a welding section of afactory, and a geo-fence extent factor may be a welding certificationfor a factory employee. The presence of the welding certification for anemployee may be detected, for example, from an indication in aRF-readable employee badge carried by the employees. When a factoryemployee enters the activation area of the welding section, determined,for example, by detecting the RF-readable badge, it is determinedwhether or not the badge includes an indication of the weldingcertification. If the welding certification is detected, then thewelding certification is considered a current geo-fence extent factor.

In some embodiments, an activation area is continuously monitored forreceived geo-fence extent factors. In alternative embodiments, such aswhen multiple activation areas exist, a particular activation area ismonitored for a received geo-fence extent factor in response todetermining that the geo-fence extent factor corresponds to a geo-fencewithin the particular activation area. In this manner, resources usedfor actively monitoring the activation areas may be conserved.

Continuing the factory example, the factory may additionally include acutting section and a fabrication section, each with an encompassingactivation area. The geo-fence extent factor of the cuttingcertification may correspond to a geo-fence for a circular saw machinelocated in the cutting section, wherein the circular saw is shut downwhen the geo-fence is violated. In response to determining that thegeo-fence for the cutting certification geo-fence extent factor islocated within the cutting section, the activation area encompassing thecutting section is then monitored for detection of the cuttingcertification (e.g., as an RF-readable indication in a badge of anentering factory employee). Activation areas for the fabrication sectionand the welding section, however, may not be similarly monitored inresponse.

Determining (230) a geo-fence extent to monitor may include determiningthe geo-fence that corresponds to the detected current geo-fence extentfactor, determining the extent, or boundary, of the geo-fence, andactivating the geo-fence to monitor the area encompassed by the extent.In instances where a detected current geo-fence extent factorcorresponds to multiple geo-fences, an extent may be determined for eachof the geo-fences.

In some embodiments, each geo-fence corresponds to a single geo-fenceextent factor (e.g., presence of hard hat/helmet). In alternativeembodiments, a geo-fence may correspond to multiple geo-fence extentfactors (e.g., presence of hard hat/helmet and employee supervisorystatus), and each of the geo-fence extent factors may correspond to adistinct geo-fence extent. For example, geo-fence extents may differ insize (e.g., area, radius, volume, etc.) or shape (e.g., pie-shaped,circular, spherical, etc.). Determining a geo-fence extent to activateand monitor may include selecting an existing extent corresponding tothe current geo-fence extent factor, or one of the multiple currentgeo-fence extent factors, or determining a new geo-fence extent.

In instances where only one of the multiple corresponding geo-fenceextent factors has been detected as a current geo-fence extent factor,the extent corresponding to the detected current geo-fence extent factormay be activated. In instances where multiple geo-fence extent factorsare simultaneously detected as current geo-fence extent factors, theextent to be activated for the geo-fence may be selected from thosecorresponding to the current geo-fence extent factors or a new geo-fenceextent may be designed, based on a set of rules. In some embodiments,the set of rules, in general, operates to determine the extent thatwould provide maximum safety if a violation occurs. For example, a rulemay determine the extent that would be violated by a current geo-fenceextent factor, or any one of the current geo-fence extent factors,before the other extents of the geo-fence would be violated by thegeo-fence extent factor.

In some embodiments, a rule for determining the extent of a geo-fenceoperates to determine the largest extent of those for the multiplecurrent geo-fence extent factors. For a geo-fence that monitorsgeographical position, the largest extent may be the extent encompassingthe largest area or volume. For example, in FIG. 1, where extent 114 andextent 116 both correspond to current geo-fence extent factors, thelargest extent is extent 114 based on encompassed area.

In some embodiments, a rule for determining the extent of a geo-fence isto determine the smallest extent among the extents corresponding tomultiple current geo-fence extent factors. For a geo-fence that monitorstemperature, and that is violated when the temperature exceeds athreshold, the smallest extent may be the extent with the lowesttemperature threshold.

In some embodiments, a rule for determining the extent of a geo-fence isto determine a combined extent that is based on two or more of theboundaries for the multiple current geo-fence extent factors. A combinedextent may comprise a combination of the sizes or shapes of the extentsfor the current geo-fence extent factors. For example, in FIG. 1, whereextent 114 and extent 116 both correspond to current geo-fence extentfactors, extent 120 is determined to be the average extent based on theboundary shapes and areas of extent 114, which is a larger, circularextent, and extent 116, which is a smaller, rectangular extent.

Determining (240) that a geo-fence has been violated may includemonitoring the geo-fence area for the corresponding current geo-fenceextent factor and determining that the current geo-fence extent factorhas traversed the extent of the corresponding geo-fence. In someembodiments, traversal of the geo-fence occurs based on location, i.e.,the geographic position of the geo-fence extent factor in relation tothe geographic position of the geo-fence.

For example, geo-fence may be comprised of a network of RF beacons thatdetect when a geo-fence extent factor crosses a virtual boundary, formedby the networked beacons, from a particular direction. As anillustration, a current geo-fence extent factor may be the non-presenceof a welding certification on an employee badge, which is detectedwithin an activation area. In response, and after determining the extentof the corresponding geo-fence, the geo-fence may be circular in shapeand monitors, in response to the violation, whether it is positionallytraversed from outside the boundary by an RF-readable employee badgecontaining an indication of the certification.

As another example, a geo-fence extent may be based on a proximity, or amaximum or minimum distance, between two or more objects. In suchinstances, one of the objects may be the current geo-fence extent factorand the geo-fence extent may be a defined distance between the currentgeo-fence extent factor and a second object. As an illustration, ageo-fence extent may be a defined distance between two volatilechemicals, as measured by, e.g., networked beacons located on theircontainers, and the geo-fence is violated if the distance becomes lessthan the defined minimum distance. As another illustration, thegeo-fence extent may be a distance between a machine and a safetydevice, and the geo-fence is violated if the distance becomes greaterthan a defined maximum distance.

In some embodiments, traversal of an extent of the geo-fence occursbased on a threshold value being met. For example, the threshold extentmay be a defined temperature, and the geo-fence is violated if thetemperature, monitored in a particular defined area, becomes above orbelow the maximum or minimum threshold temperature.

In some embodiments, where multiple current geo-fence extent factorscorrespond to the same geo-fence, a violation of the geo-fence occurs ifany of the current geo-fence extent factors traverse the geo-fenceextent. For example, in FIG. 3A, user 304 and user 306 represent currentgeo-fence extent factors for extent 320, and a violation of thegeo-fence occurs if either user 304 or user 306 traverses extent 320.

Each violation may be recorded and stored along with information relatedto the violation. Violation information may include the violatedgeo-fence, the design of the violated extent (e.g., the shape, size, andgeographical position of the boundary), the location on the geo-fencewhere the violation occurred, the geo-fence extent factor that violatedthe geo-fence, the resource corresponding to the violated geo-fence, andthe date and time of the violation. In some embodiments, violations maybe predicted by determining a pattern based on the violationinformation. For example, it may be determined that a violation of ageo-fence corresponding to a machine frequently occurs on Tuesdaysbetween 4 pm and 5 pm.

In response to determining a violation pattern for a geo-fence, thegeo-fence extent may be modified. In some embodiments, the geo-fenceextent may be modified in a manner that causes the geo-fence to detectviolations earlier and therefore perform a violation response earlier,in order to increase safety. The extent may be modified with respect tothe date/time of the violations in the violation pattern. For example,the extent of the geo-fence in the previous example may be enlargedproportionally (i.e., maintaining the shape of the original geo-fence)by fifty percent on Tuesdays between 4 pm and 5 pm. Further, the extentmay be modified with respect to the location of the violations in theviolation pattern. For example, in FIG. 3B, a pattern of violations atgeo-fence extent 332 has occurred in a particular area of the geo-fence.To detect violations earlier, geo-fence extent 332 is modified intomodified geo-fence extent 334 by extending the extent in that particulararea to account for a prediction that violations will continue to occurthere.

Performing (250) a violation response may include determining theviolation response that corresponds to the violated geo-fence andperforming the violation response for a resource. A violation responsemay include, for example, providing an audial or visual warning,shutting down the corresponding resource, or adjusting the atmospherictemperature (e.g., through air geo-fence extent factoring or heating).

In some embodiments, the violation response is maintained until it isdetermined that the violation is resolved. For example, a machine may beshut down in response to a geo-fence being traversed by an unauthorizedemployee (e.g., a non-manager), and the machine may remain shut downuntil the employee is no longer detected (e.g., through a wornRF-readable badge) within the encompassed geo-fence area.

FIG. 4 depicts computing system 400, which illustrates components ofgeo-fence program 101. Computing system 400 includes processor(s) 401,cache 403, memory 402, persistent storage 405, communications unit 407,I/O interface(s) 406, and communications fabric 404.

Communications fabric 404 provides communications between cache 403,memory 402, persistent storage 405, communications unit 407, and I/Ointerface(s) 406. Communications fabric 404 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (e.g., microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric404 may be implemented with one or more buses or a crossbar switch.

Memory 402 and persistent storage 405 are computer readable storagemedia. In an embodiment, memory 402 includes random access memory (RAM)(not shown). In general, memory 402 may include any suitable volatile ornon-volatile computer readable storage media. Cache 403 is a fast memorythat enhances the performance of processors 401 by holding recentlyaccessed data, and data near recently accessed data, from memory 402.

Program instructions and data used to practice embodiments of thepresent invention may be stored in persistent storage 405 and in memory402 for execution by one or more of the respective processors 401 viacache 403. In an embodiment, persistent storage 405 includes a magnetichard disk drive. Alternatively, or in addition to a magnetic hard diskdrive, persistent storage 405 may include a solid state hard drive, asemiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 405 may also be removable. Forexample, a removable hard drive may be used for persistent storage 405.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer readable storage medium that is also part of persistent storage405.

Communications unit 407, in these examples, provides for communicationswith other data processing systems or devices. In these examples,communications unit 407 includes one or more network interface cards.Communications unit 407 may provide communications through the use ofeither or both physical and wireless communications links. Programinstructions and data used to practice embodiments of the presentinvention may be downloaded to persistent storage 405 throughcommunications unit 407.

I/O interface(s) 406 allows for input and output of data with otherdevices that may be connected to each computer system. For example, I/Ointerface 406 may provide a connection to external devices 408 such as akeyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 408 can also include portable computer readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention can be stored on such portablecomputer readable storage media and can be loaded onto persistentstorage 405 through I/O interface(s) 406. I/O interface(s) 406 alsoconnect to display 409.

Display 409 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational blocks to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions. The descriptions of the various embodimentsof the present invention have been presented for purposes ofillustration, but are not intended to be exhaustive or limited to theembodiments disclosed. Many modifications and variations will beapparent to those of ordinary skill in the art without departing fromthe scope and spirit of the invention. The terminology used herein waschosen to best explain the principles of the embodiment, the practicalapplication or technical improvement over technologies found in themarketplace, or to enable others of ordinary skill in the art tounderstand the embodiments disclosed herein.

Embodiments of the present invention may also be delivered as part of aservice engagement with a client corporation, nonprofit organization,government entity, internal organizational structure, or the like. Theseembodiments may include configuring a computer system to perform, anddeploying software, hardware, and web services that implement, some orall of the methods described herein. These embodiments may also includeanalyzing the client's operations, creating recommendations responsiveto the analysis, building systems that implement portions of therecommendations, integrating the systems into existing processes andinfrastructure, metering use of the systems, allocating expenses tousers of the systems, and billing for use of the systems.

What is claimed is:
 1. A method comprising: detecting a user locatedwithin an activation area that includes one or more geo-fences, whereina boundary of a geo-fence of the one or more geo-fences is defined byone or more geo-fence extents; determining a first geo-fence extentfactor of one or more geo-fence extent factors, associated with anattribute of the user and corresponding respectively to the one or moreextents of a geo-fence of the one or more geo-fences within theactivation area; selecting a first extent for a first geo-fence thatcorresponds to the first geo-fence extent factor associated with theuser; and responsive to determining that the first extent of the firstgeo-fence within the activation area is violated by the location of theuser, performing a violation response corresponding to the firstgeo-fence extent factor.
 2. The method of claim 1, further comprising:tracking a geographic position of the user that is proximate to thefirst geo-fence within the activation area.
 3. The method of claim 1,further comprising: predicting a future violation of the first geo-fencebased on a pattern of violations of the first geo-fence; and modifyingthe first geo-fence based on the predicted future violation.
 4. Themethod of claim 1, further comprising: determining a second geo-fenceextent factor associated with a second user; and determining a secondextent for the first geo-fence based on the second geo-fence extentfactor corresponding to the second extent and associated with the seconduser.
 5. The method of claim 4, wherein a new extent is an average ofthe first extent and the second extent.
 6. The method of claim 1,wherein an attribute of the user associated with the first geo-fenceextent factor includes one or more wearable items of the user.
 7. Themethod of claim 1, wherein an attribute of the user associated with thefirst geo-fence extent factor includes a role of the user.
 8. The methodof claim 1, wherein an attribute of the user associated with the firstgeo-fence extent factor includes a condition of an environment withinthe first geo-fence.
 9. The method of claim 1, wherein an attribute ofthe user associated with the first geo-fence extent factor includes anauthorization level of the user.
 10. The method of claim 1, where theviolation response is selected from the group consisting ofcommunicating a warning to the user violating the geo-fence, andshutting down equipment located within the geo-fence.
 11. A computerprogram product comprising: one or more computer readable storage media;and program instructions stored on the one or more computer readablestorage media, the program instructions comprising: program instructionsto detect a user located within an activation area that includes one ormore geo-fences, wherein a boundary of a geo-fence of the one or moregeo-fences is defined by one or more geo-fence extents; programinstructions to determine a first geo-fence extent factor of one or moregeo-fence extent factors associated with an attribute of the user, andcorresponding respectively to the one or more extents of a geo-fence ofthe one or more geo-fences within the activation area; programinstructions to select a first extent for a first geo-fence thatcorresponds to the first geo-fence extent factor associated with theuser; and responsive to determining that the first extent of the firstgeo-fence within the activation area is violated by the location of theuser, program instructions to perform a violation response correspondingto the first geo-fence extent factor.
 12. The computer program productof claim 11, further comprising: program instructions to track ageographic position of the user that is proximate to the first geo-fencewithin the activation area.
 13. The computer program product of claim11, further comprising: program instructions to predict a futureviolation of the first geo-fence based on a pattern of violations of thefirst geo-fence; and program instructions to modify the first geo-fencebased on the predicted future violation.
 14. The computer programproduct of claim 11, further comprising: program instructions todetermine a second geo-fence extent factor associated with a seconduser; and program instructions to determine a second extent for thefirst geo-fence based on the second geo-fence extent factorcorresponding to the second extent and associated with the second user.15. A computer system comprising: one or more computer processors; oneor more computer readable storage media; program instructions stored onthe one or more computer readable storage media, the programinstructions comprising: program instructions to detect a user locatedwithin an activation area that includes one or more geo-fences, whereina boundary of a geo-fence of the one or more geo-fences is defined byone or more geo-fence extents; program instructions to determine a firstgeo-fence extent factor of one or more geo-fence extent factorsassociated with an attribute of the user, and corresponding respectivelyto the one or more extents of a geo-fence of the one or more geo-fenceswithin the activation area; program instructions to select a firstextent for a first geo-fence that corresponds to the first geo-fenceextent factor associated with the user; and responsive to determiningthat the first extent of the first geo-fence within the activation areais violated by the location of the user, program instructions to performa violation response corresponding to the first geo-fence extent factor.16. The computer system of claim 15, wherein an attribute of the userassociated with the first geo-fence extent factor includes one or morewearable items of the user.
 17. The computer system of claim 15, whereinan attribute of the user associated with the first geo-fence extentfactor includes a role of the user.
 18. The computer system of claim 15,wherein an attribute of the user associated with the first geo-fenceextent factor includes a condition of an environment within the firstgeo-fence.
 19. The computer system of claim 15, wherein an attribute ofthe user associated with the first geo-fence extent factor includes anauthorization level of the user.
 20. The computer system of claim 15,where the violation response is selected from the group consisting ofcommunicating a warning to the user violating the geo-fence, andshutting down equipment located within the geo-fence.